package com.ynet.middleground.contract.bean;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * @author liulx
 * @description PDF 文件签署请求类
 * @date 2020-04-19 18:05
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "PDF 文件签署请求类", description = "PDF 文件签署请求类，使用 e 签宝证书")
public class SignPdfReq extends EnterpriseBaseReqObj {

    private static final long serialVersionUID = 2855372726097122220L;

    @ApiModelProperty(value = "签署者账号标识", notes = "签署者账号标识", dataType = "String", required = true)
    @NotBlank(message = "签署者账号标识不能为空")
    private String accountId;

    @ApiModelProperty(value = "PDF 文件 oss 短路径地址(包含 Bucket) \n  如：zhongtai/file.pdf",
        notes = "PDF 文件 oss 短路径地址(包含 Bucket) \n  如：zhongtai/file.pdf", dataType = "String", required = true)
    @NotBlank(message = "PDF 文件 oss 完整路径地址不能为空")
    private String pdfUrl;

    @ApiModelProperty(value = "印章图片 id", notes = "印章图片 id", dataType = "Integer", required = true)
    @NotNull(message = "印章图片 id 不能为空")
    private Integer sealId;

    @ApiModelProperty(value = "签章位置信息", notes = "签章位置信息", dataType = "com.ynet.middleground.contract.bean.SignPos",
        required = true)
    @NotNull(message = "签章位置信息不能为空")
    private SignPos signPos;

    @ApiModelProperty(value = "签章类型\nSingle: 单页签章\nMulti: 多页签章\nEdges: 签骑缝章\nKey: 关键字签章",
        notes = "签章类型\nSingle: 单页签章\nMulti: 多页签章\nEdges: 签骑缝章\nKey: 关键字签章", dataType = "String", required = true)
    @NotBlank(message = "签章类型不能为空")
    private String signType;

    @ApiModelProperty(value = "短信验证码，必须通过 e 签宝接口发送", notes = "短信验证码，必须通过 e 签宝接口发送", dataType = "String",
        required = true)
    @NotBlank(message = "短信验证码不能为空")
    private String code;

    @ApiModelProperty(value = "关联合约 id，如果是通过中台生成的合约该项必填", notes = "关联合约 id，如果是通过中台生成的合约该项必填", dataType = "Integer")
    private Integer contractId;

    @ApiModelProperty(value = "场景描述", notes = "场景描述", dataType = "String")
    private String sceneDesc;

}
